package com.haixiaoke.saas.department.service;

import com.haixiaoke.saas.common.core.domain.entity.SysMenu;
import com.haixiaoke.saas.department.domain.BizTenantMenu;

import java.util.List;

/**
 * 机构和菜单的关联Service接口
 * 
 * @author panda
 * @date 2024-02-29
 */
public interface IBizTenantMenuService {
    /**
     * 查询机构和菜单的关联
     * 
     * @param depId 机构和菜单的关联主键
     * @return 机构和菜单的关联
     */
    BizTenantMenu selectBizDepMenuByDepId(Long depId);

    /**
     * 查询机构和菜单的关联列表
     * 
     * @param bizTenantMenu 机构和菜单的关联
     * @return 机构和菜单的关联集合
     */
    List<BizTenantMenu> selectBizDepMenuList(BizTenantMenu bizTenantMenu);

    /**
     * 新增机构和菜单的关联
     * 
     * @param bizTenantMenu 机构和菜单的关联
     * @return 结果
     */
    int insertBizDepMenu(BizTenantMenu bizTenantMenu);

    /**
     * 修改机构和菜单的关联
     * 
     * @param bizTenantMenu 机构和菜单的关联
     * @return 结果
     */
    int updateBizDepMenu(BizTenantMenu bizTenantMenu);

    /**
     * 批量删除机构和菜单的关联
     * 
     * @param tenantIds 需要删除的机构和菜单的关联主键集合
     * @return 结果
     */
     int deleteBizDepMenuByDepIds(String[] tenantIds);

    /**
     * 删除机构和菜单的关联信息
     * 
     * @param tenantId 机构和菜单的关联主键
     * @return 结果
     */
     int deleteBizDepMenuByDepId(String tenantId);

    /**
     * 批量插入机构和菜单的关联数据
     * @param depMenuList
     * @return
     */
    int insertBatchDepMenu(List<BizTenantMenu> depMenuList);

    /**
     * 根据机构id查询菜单id集合
     * @param tenantId
     * @return
     */
    List<Long> selectMenuIdsByDepId(String tenantId);

    /**
     * 根据机构id查询机构的所有菜单
     * @param tenantId 机构id
     * @return
     */
    List<SysMenu> selectMenuByDepId(String tenantId);

    int deleteBizTenantMenuByMenuId(Long menuId);
}
